package special_class;

import java_interface.Student;

/**
 * @author : niu niu
 * @version : 1.0.0
 * @date : 2022/9/20 19:37
 *   三个特殊的类：
 *      java.lang.Object类 ：
 *          方便实现参数 最高 统一化
 *          除了可以接受所有的类的对象以外（是java中所有的类的父类），还可以接受所有的引用数据类型（接口和数组）
 *          即 Object类可以接受所有的引用数据类型（包括类，接口，数组引用）
 *          2.正因为 object类是所有类的父类，因此Object类中的所有方法，子类中都有，当Object类中所有的方法学完，java的se就写完了
 *              2.1 toString方法：
 *
 *
 *                              println方法自动调用toString方法
 *              2.2 equals 方法： 对象比较相等使用equal方法，在引用数据类型进行内容比较时，使用
 *
 *                              在java中“==”操作符返回布尔值，比较两个变量“数值”是否相等
 *                              对于 int ...基础数据类型，存储内容，比较的就是 内容值。
 *                              对于 stu..引用数据类型，存储对象的地址，实际比较的是 地址值 是否相同，不会比较内容。
 *                              千万小心："==" 在比较包装类  和  String字符串类型 的坑！
 *                                       只要是进行对象的比较，一定要用equals方法！
 *
 *                              Object类默认的equals方法： return (this == obj);
 *
 *                              若要进行同一个类的不同对象属性值的比较相等，覆写equals方法
 *                              自写方法： //1.是不是同一个对象
 *                                        //2.是不是同一个类型
 *                                        //3.向下转型，比较各属性
 *                                            比较各属性：若属性也是引用类型，使用该引用类型的equals方法比较！
 *                                                       基础类型使用 ==
 *
 *              请说出==和equals的区别： 1.== 比较的是两个变量的数值是否相等，
 *                                          对于基本数据类型，比较的就是具体保存的数值，
 *                                          对于引用数据类型比较的是两个引用类型的地址是否相等
 *                                      2.equals方法是Object类的默认方法，
 *                                      自定义类型覆写 equals方法可以按照属性值来比较两个对象的内容是否相等
 *                                      ==比较的是地址，equals比较的是两个对象的属性值是否相等
 *
 */
public class Demo1 {
    public static void main(String[] args) {
//        fun(new Student("22",12));
//        fun(new Person("22",2));
//        //接口
//        Comparable comparable = new Student("22",2);
//        //数组
//        int[] arr  = new int[]{1,2,3};
//        fun(comparable);
//        fun(arr);
        int a  = 10;
        int b = 10;
        System.out.println(a==b);
        Student student = new Student( "66",12);
        Student student1 = new Student("66", 12);
        System.out.println(student1== student);
        System.out.println(student1.equals(student));
    }
    public static void fun(Object o){
        System.out.println(o);
    }
}
